package com.kehao.kehaoTest.easyExcel;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

/**
 * @生成测试数据
 */
public class ExcelCreat {

    public static void main(String[] args) {
        // 创建一个新的工作簿
        Workbook workbook = new XSSFWorkbook();
        // 创建一个新的工作表
        Sheet sheet = workbook.createSheet("商品测试数据");

        // 定义表头
        String[] headers = {"序号", "商品编码", "类型", "品牌", "库存", "成本"};

        // 创建表头行
        Row headerRow = sheet.createRow(0);
        for (int i = 0; i < headers.length; i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(headers[i]);
        }

        // 定义商品类型和品牌列表
        String[] productTypes = {"电子产品", "服装", "食品", "家居用品", "美妆护肤"};
        String[] brands = {"品牌A", "品牌B", "品牌C", "品牌D", "品牌E", "品牌F", "品牌G"};

        // 创建随机数生成器
        Random random = new Random();

        // 生成测试数据
        for (int rowNum = 1; rowNum <= 100; rowNum++) {
            Row row = sheet.createRow(rowNum);

            // 序号
            row.createCell(0).setCellValue(rowNum);

            // 商品编码（8位随机数字）
            StringBuilder productCode = new StringBuilder();
            for (int i = 0; i < 8; i++) {
                productCode.append(random.nextInt(10));
            }
            row.createCell(1).setCellValue(productCode.toString());

            // 类型（随机选择）
            String productType = productTypes[random.nextInt(productTypes.length)];
            row.createCell(2).setCellValue(productType);

            // 品牌（随机选择）
            String brand = brands[random.nextInt(brands.length)];
            row.createCell(3).setCellValue(brand);

            // 库存（1到1000之间的随机整数）
            int stock = random.nextInt(1000) + 1;
            row.createCell(4).setCellValue(stock);

            // 成本（1到1000之间的随机小数，保留两位小数）
            double cost = 1 + random.nextDouble() * 999;
            row.createCell(5).setCellValue(cost);
        }

        // 自动调整列宽
        for (int i = 0; i < headers.length; i++) {
            sheet.autoSizeColumn(i);
        }

        // 保存工作簿到文件
        try (FileOutputStream outputStream = new FileOutputStream("商品测试数据.xlsx")) {
            workbook.write(outputStream);
            System.out.println("Excel文件已生成！");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
